feat(plugins): add discovery keywords to each plugin.json#48
Conversation
Adds a grounded `keywords` array to all 6 plugins' `plugin.json`, with terms drawn from each plugin's bundled skills/MCP/agents, mirroring the established ksail plugin precedent (`copilot-plugin/.claude-plugin/plugin.json` ships a keywords array). Per ADR-0001 §D3 the marketplace manifests keep their frozen minimal name/description/version/source entry schema — the discovery metadata lives in the per-plugin plugin.json only, so the byte-for-byte manifest parity check is untouched. Fixes #47 Part of #38 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughSix plugin manifest files (plugins/agentic-engineering, engineering-practices, frontend-design, github, gitops-kubernetes, go) each receive a new ChangesPlugin manifest keywords
Estimated code review effort: 1 (Trivial) | ~3 minutes Possibly related PRs
Poem A rabbit hopped through JSON trees, 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Fixes #47 · Part of #38 (Theme 3 — marketplace discoverability)
What
Adds a grounded
keywordsarray to all 6 plugins'plugins/<name>/plugin.json. Each keyword set is drawn from that plugin's bundled skills / MCP / agents — not generic filler:gitops-kubernetesgithubagentic-engineeringgoengineering-practicesfrontend-designWhy
Plugin manifests carried no discovery metadata.
keywordsis the structured field that aids search/filtering across the Claude Code / Copilot CLI plugin ecosystems, and the sibling ksail plugin already sets it (projects/ksail/copilot-plugin/.claude-plugin/plugin.json) — an established, maintainer-authored devantler-tech precedent this change follows.ADR-0001 §D3 compliance (why not the marketplace manifests)
ADR-0001 explicitly froze the marketplace entry schema — "plugin entries stay name/description/version/source and the byte-for-byte parity diff is untouched." So the metadata lives in the per-plugin
plugin.json(free-form, already carriesauthor/resource pointers), never in.claude-plugin/marketplace.json/.github/plugin/marketplace.json. The two manifests are unchanged → the parity check stays green.Scope / deferred (per #47)
categorydeferred — no in-repo precedent inplugin.jsonand the VS Codecategoryvocabulary is a fixed enum needing a source-of-truth decision.validate-manifests.shguard asserting keyword presence — deferred; this first child seeds the data.Validation
plugin.jsonparse as valid JSON;keywordsplaced afterauthor, before the resource pointers (ksail ordering).scripts/validate-manifests.sh→ EXIT 0 (both manifests valid, parity intact, README↔plugins parity, provenance guard all pass).scripts/validate-manifests.test.shself-test → 40 passed, 0 failed.marketplace.json×2) untouched.